import Vue from "vue";
import VueRouter from "vue-router";
Vue.use(VueRouter);

// 解决路由报错
const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err);
};
/*
  //当设置 true 的时候该路由不会在侧边栏出现 如401，login等页面，或者如一些编辑页面/edit/1
  hidden: true // (默认 false)

  //当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
  redirect: 'noRedirect'

  //当你一个路由下面的 children 声明的路由大于1个时，自动会变成嵌套的模式--如组件页面
  //只有一个时，会将那个子路由当做根路由显示在侧边栏--如引导页面
  //若你想不管路由下面的 children 声明的个数都显示你的根路由
  //你可以设置 alwaysShow: true，这样它就会忽略之前定义的规则，一直显示根路由
  alwaysShow: true

  name: 'router-name' //设定路由的名字，一定要填写 页面的name也要和这边的一样 不然keep-alive缓存没效果
  meta: {
    roles: ['admin', 'editor'] //设置该路由进入的权限，支持多个权限叠加
    title: 'title' //设置该路由在侧边栏和面包屑中展示的名字
    icon: 'svg-name' //设置该路由的图标
    noCache: true //如果设置为true，则不会被 <keep-alive> 缓存(默认 false)  
    breadcrumb: false // 如果设置为false，则不会在breadcrumb面包屑中显示
  }

 */
import Layout from "@/layout";

export const asyncRoutes = [
  {
    path: "/WechatMP",
    name: "WechatMP",
    component: Layout,
    redirect: "/WechatMP/CustomMenu",
    meta: {
      title: "微信公众号",
      icon: "component"
    },
    children: [
      {
        name: "WechatMPCustomMenu",
        path: "/WechatMP/CustomMenu",
        component: () => import("@/views/wechatMP/customMenu"),
        meta: {
          title: "自定义菜单",
          icon: "component"
        }
      },
      {
        name: "WechatMPKeyWordReply",
        path: "/WechatMP/KeyWordReply",
        component: () => import("@/views/wechatMP/keyWordReply"),
        meta: {
          title: "关键字回复",
          icon: "message"
        }
      }
    ]
  },
  {
    name: "system",
    path: "/system",
    component: Layout,
    meta: {
      title: "系统设置",
      icon: "example"
    },
    children: [
      {
        name: "PlatfromList",
        path: "/platform/list",
        component: () => import("@/views/system/platform/list"),
        meta: {
          title: "平台管理",
          icon: "user"
        }
      },
      {
        path: "/platform/edit/:id(\\d+)",
        component: () => import("@/views/system/platform/edit"),
        name: "EditPlatform",
        meta: {
          title: "编辑平台",
          noCache: true
        },
        hidden: true
      },
      {
        path: "/platform/create",
        component: () => import("@/views/system/platform/create"),
        name: "CreatePlatform",
        meta: {
          title: "创建平台",
          noCache: true
        },
        hidden: true
      },
      
    ]
  },
  {
    path: "/assembly",
    name: "组件",
    component: Layout,
    redirect: "/icon",
    meta: {
      title: "组件",
      icon: "component"
    },
    children: [
      {
        name: "图标",
        path: "/icon",
        component: () => import("@/views/icons/index"),
        meta: {
          title: "图标",
          icon: "icon"
        }
      },
      {
        name: "视频",
        path: "/vue-video-player",
        component: () => import("@/views/assembly/vue-video-player"),
        meta: {
          icon: "video",
          title: "vue-video-player"
        }
      }
    ]
  },
  {
    name: "404页面",
    path: "*",
    redirect: "/404",
    hidden: true
  }
];

export const constantRoutes = [
  {
    path: "/redirect",
    component: Layout,
    hidden: true,
    children: [
      {
        path: "/redirect/:path(.*)",
        component: () => import("@/views/redirect/index")
      }
    ]
  },
  {
    path: "/",
    component: Layout,
    redirect: "/dashboard",
    children: [
      {
        path: "dashboard",
        component: () => import("@/views/dashboard/index"),
        name: "Dashboard",
        meta: {
          title: "控制面板",
          icon: "dashboard",
          affix: true
        }
      }
    ]
  },
  {
    path: "/login",
    component: () => import("@/views/login/index"),
    name: "Login",
    hidden: true
  },
  {
    path: "/404",
    component: () => import("@/views/error-page/404"),
    hidden: true
  }
];

const createRouter = () =>
  new VueRouter({
    mode: "history",
    scrollBehavior: () => ({
      y: 0
    }),
    routes: constantRoutes
  });

const router = createRouter();

export function resetRouter() {
  const newRouter = createRouter();
  router.matcher = newRouter.matcher; // reset router
}

export default router;
